`ifndef MYCPU_H
`define MYCPU_H

`define BR_BUS_WD       34
`define FS_TO_DS_WD     65
`define DS_TO_ES_WD     198
`define ES_TO_MS_WD     214
`define MS_TO_WS_WD     207
`define WS_TO_RF_WD     38

//crmd
    `define CSR_CRMD      14'h0000
    `define CSR_CRMD_PLV  1:0
    `define CSR_CRMD_IE   2
    `define CSR_CRMD_DA   3
//prmd
    `define CSR_PRMD      14'h0001
    `define CSR_PRMD_PPLV 1:0
    `define CSR_PRMD_PIE  2
    `define CSR_PRMD_DA   3
//ecfg
    `define CSR_ECFG      14'h0004
    `define CSR_ECFG_LIE  12:0
//estat
    `define CSR_ESTAT     14'h0005
    `define CSR_ESTAT_IS10  1:0
    `define CSR_ESTAT_ECODE  21:16
    `define CSR_ESTAT_ESUBCODE 30:22
//era
    `define CSR_ERA       14'h0006
    `define CSR_ERA_PC    31:0
//eentry
    `define CSR_EENTRY    14'h000c
    `define CSR_EENTRY_VA 31:6
//save
    `define CSR_SAVE0     14'h0030
    `define CSR_SAVE1     14'h0031
    `define CSR_SAVE2     14'h0032
    `define CSR_SAVE3     14'h0033
    `define CSR_SAVE_DATA 31:0
//badv
    `define CSR_BADV      14'h0007
//time
    `define CSR_TID       14'h0040
    `define CSR_TID_TID   31:0
    `define CSR_TCFG      14'h0041
    `define CSR_TCFG_EN   0
    `define CSR_TCFG_PERIOD 1
    `define CSR_TCFG_INITV 31:2
    `define CSR_TVAL      14'h0042
    `define CSR_TICLR     14'h0044
    `define CSR_TICLR_CLR 0
//exc code
    `define ECODE_INT     6'h00
    `define ECODE_SYS     6'h0b
    `define ECODE_ADE     6'h08
    `define ESUBCODE_ADEF 9'h000
    `define ECODE_ALE     6'h09
    `define ECODE_BRK     6'h0c
    `define ECODE_INE     6'h0d

`endif